package E_2024;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/*
    在某个项目中有多个任务(用 tasks 数组表示) 需要您进行处理，其中 tasks[i] = [si, ei]
    你可以在 s[i] <= day <= e[i]中的任意天处理该任务。请返回你可以处理的最大任务数。
    注:一天可以完成一个任务的处理
输入描述:
    第一行为任务数量n,1<= n<= 100000。
    后面n行表示各任务的开始时间和终止时间，用 si和ei表示，1= si<= ei<=100000.
输出描述:
    输出为一个整数，表示可以处理的最大任务数
示例1
    输入:
    3
    1 1
    1 2
    1 3
    输出:
    3
    说明:
    第一天处理任务 1，第二天处理任务 2，第三天处理任务 3。
 */
public class E_200_21 {
    public static void main(String[] args) {
        List<Integer[]> list = new ArrayList<>();
        list.add(new Integer[]{1,1});
        list.add(new Integer[]{1,2});
        list.add(new Integer[]{1,2});
        System.out.println(ans(list));
    }
    public static int ans(List<Integer[]> arr){
        arr.sort((a,b) ->{
            if (Objects.equals(a[0], b[0])) return a[1].compareTo(b[1]);
            else return a[0].compareTo(b[0]);
        });
        int time = 1;
        int ans = 0;
        for (Integer[] is : arr) {
            if (is[1] < time) continue;
            if (is[0] > time){
                time = is[0] + 1;
            }else {
                time++;
            }
            ans++;
        }
        return ans;
    }
}
